<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        var obj = { a: 1, b: 2 }

        //1.获取原型
        // var proto = Object.getPrototypeOf(obj)
        // console.log(proto)


        //2.设置原型
        // Object.setPrototypeOf(obj, { c: 3, d: 4 })
        // console.log(obj.__proto__)


        //3.获取原型的可扩展性
        // var extensible = Object.isExtensible(obj)
        // console.log(extensible)//返回boolean是否可扩展
        // Object.freeze(obj) //冻结对象后不可扩展
        // var extensible = Object.isExtensible(obj)
        // console.log(extensible)

        // Object.seal(obj)//封闭对象
        // obj.c = 3//不可添加
        // console.log(obj)

        // delete obj.a//不可删除
        // console.log(obj)

        // obj.a = 1000//可写入
        // console.log(obj)

        // for (let i in obj) {
        //     console.log(obj[i])//可读
        // }


        //4.获取自有属性
        // Object.setPrototypeOf(obj, { c: 3, d: 4 })
        // console.log(Object.getOwnPropertyNames(obj))//只能读取自有的。不能读取添加到原型的



        //5.禁止扩展对象
        // Object.preventExtensions(obj)
        // obj.c = 3//禁止添加属性
        // console.log(obj)

        // delete obj.a//可删除
        // console.log(obj)

        //6.拦截对象操作
        // Object.defineProperty()

        //7.判断是否是自身属性
        // Object.setPrototypeOf(obj, { c: 3, d: 4 })
        // console.log(obj.hasOwnProperty('a'))//true
        // console.log(obj.hasOwnProperty('c'))//false

        //8.GET
        // Object.setPrototypeOf(obj, { c: 3, d: 4 })
        // console.log('a' in obj)
        // console.log('c' in obj)//原型和自身都会查。用到GET
        // console.log(obj.a)

        //9.SET
        // obj.a = 3
        // obj['b'] = 4
        // console.log(obj)//赋值都会用到SET

        //10.Delete删除方法
        // delete obj.a
        // console.log(obj)

        //11.Enumerate枚举
        // for (var i in obj) {
        //     console.log(obj[i])
        // }


        //12.获取键集合
        // Object.setPrototypeOf(obj, { c: 3, d: 4 })
        // console.log(Object.keys(obj))//只能获取自身属性键

        //13.方法的调用
        // function func() { }
        // func()
        // func.call/apply


        //14.new实例化
        // function FuncF(){}
        // new Func()


    </script>
</body>

</html>